/*********************************
*-- 33 KDH Knieja ---------------*
*-- im. Harcerzy Września 1939 --*
*-- autor: Marcin Rzepisko ------*
*-- data: 2013-11-10 ------------*
**********************************/

package net.kdh.knieja.dao.interfejsy;

import net.kdh.knieja.model.system.Uzytkownik;
import net.kdh.knieja.model.system.token.Token;
import net.kdh.knieja.model.wspolne.wyjatki.BladAutoryzacjiWyjatek;
import net.kdh.knieja.model.wspolne.wyjatki.BladWalidacjiWyjatek;
import net.kdh.knieja.model.wspolne.wyjatki.BladWarstwyDaoWyjatek;

/**
 *
 * @author rz.marcin@gmail.com
 */
public interface ObslugaUzytkownikowDAO {
    public void usunToken(Token token);
    /**
     * 
     * @param login
     * @return <li>String[0] idUzytkownika</li>
     * <li>String[1] TypKontaEnum</li>
     * @throws BladWalidacjiWyjatek 
     */
    public String[] pobierzPodstawoweDane(String login) throws BladWalidacjiWyjatek;
    /**
     * 
     * @param idUzytkownika
     * @param haslo
     * @throws BladAutoryzacjiWyjatek 
     */
    
    public void autoryzuj(String idUzytkownika, String haslo) throws BladAutoryzacjiWyjatek;
    /**
     * Pobiera uzytkownika o zadanym id
     * @param idUzytkownika
     * @return Uzytkownik
     * @throws BladWalidacjiWyjatek - niepoprawne dane
     */
    
    public void zapiszToken(Token token) throws BladWarstwyDaoWyjatek;
    public Uzytkownik pobierzUzytkownika(String idUzytkownika)
            throws BladWalidacjiWyjatek;
    /**
     * Dodaje uzytkownika do bazy
     * @param uzytkownik
     * @throws BladWalidacjiWyjatek - niepoprawne dane
     */
    public void dodajUzytkownika(Uzytkownik uzytkownik) 
            throws BladWalidacjiWyjatek;
    
    /**
     * Edytuje uzytkownika, na podstawie podanego id i w zależności od poziomu
     * autoryzacji
     * @param uzytkownik
     * @throws BladWalidacjiWyjatek - niepoprawne dane
     */
    public void edytujUzytkownika(Uzytkownik uzytkownik)
            throws BladWalidacjiWyjatek;
    /**
     * Usuwa uzytkownika
     * @param idUzytkownika
     * @throws BladWalidacjiWyjatek - niepoprawne dane
     */
    public void usunUzytkownika(String idUzytkownika)
            throws BladWalidacjiWyjatek;
    /**
     * Blokuje uzytkownika uniemozliwiajac mu logowanie oraz dostep do konta
     * @param idUzytkownika
     * @throws BladWalidacjiWyjatek - niepoprawne dane
     */
    public void zablokujUzytkownika(String idUzytkownika)
            throws BladWalidacjiWyjatek;
    /**
     * Odblokowuje dostęp do konta uzytkownikowi
     * @param idUzytkownika
     * @throws BladWalidacjiWyjatek - niepoprawne dane
     */
    public void odblokujUzytkownika(String idUzytkownika)
            throws BladWalidacjiWyjatek;
}
